Hash trees for verifying the integrity of data blocks of a data file have been described by Ralph C. Merkle in “Protocols for public key cryptography” in Proceedings of the IEEE Symposium on Security and Privacy, pages 122-134, 1980. Such hash trees are also denoted as Merkle hash trees. Hash trees are virtual trees computed over data blocks of the data files to attest to the integrity of the data blocks or of groups of data blocks.
When data blocks are validly changed, the hash tree is no longer current and should be updated. One known method is to perform the update of the hash tree when the data file is finished with, whether through closing or syncing to disc. This has the advantage of not performing any unnecessary hash calculations, but results in a potentially crippling delay and heavy use of the processor of the storage system. Another approach is to perform the update of a hash tree every time a single data block has changed.
It is an object of the invention to provide other solutions for verifying the integrity of data files.
It is a further object of the invention to provide an improved storage system, an improved method and an improved computer program embodying solutions for verifying the integrity of data files.